package com.tangbuzhi.observer;

import java.util.Observable;
import java.util.Observer;

/**
 * 观察者模式
 */
public class ObserverCase {
    public static class Coder implements Observer {
        private String name;

        public Coder(String name) {
            this.name = name;
        }

        @Override
        public void update(Observable o, Object arg) {
            System.out.println("Hi，" + name + "，你订阅的Android前沿技术有最新发布,内容：" + arg.toString() + "，请前往查看！");
        }
    }

    public static class Publisher extends Observable {
        public void notice(String content) {
            setChanged();
            notifyObservers(content);
        }
    }

    public static void main(String[] args) {
        Publisher publisher = new Publisher();
        Coder coder_a = new Coder("coder_A");
        Coder coder_b = new Coder("coder_B");
        Coder coder_c = new Coder("coder_C");
        publisher.addObserver(coder_a);
        publisher.addObserver(coder_b);
        publisher.addObserver(coder_c);
        publisher.notice("Android注解annotation");
        /**
         Hi，coder_C，你订阅的Android前沿技术有最新发布,内容：Android注解annotation，请前往查看！
         Hi，coder_B，你订阅的Android前沿技术有最新发布,内容：Android注解annotation，请前往查看！
         Hi，coder_A，你订阅的Android前沿技术有最新发布,内容：Android注解annotation，请前往查看！
         */
    }
}
